package com.zbangmall.util.image;

import java.awt.*;
import java.awt.image.BufferedImage;

/**
 * 图片相关的操作类
 */
public final class ImageUtil {

	/**
	 * 重新设定图像的长高宽
	 *
	 * @param originalImage 图像数据
	 * @param width         宽
	 * @param height        高
	 * @return
	 */
	public static BufferedImage imageResize(BufferedImage originalImage, Integer width, Integer height) {
		if (width <= 0) {
			width = 1;
		}
		if (height <= 0) {
			height = 1;
		}
		BufferedImage newImage = new BufferedImage(width, height, originalImage.getType());
		Graphics      g        = newImage.getGraphics();
		g.drawImage(originalImage, 0, 0, width, height, null);
		g.dispose();
		return newImage;
	}

	/**
	 * 按照给点的比例放大图像
	 * 当缩减比例小于等于0时不发生任何变化
	 *
	 * @param originalImage 图像数据
	 * @param withdRatio    宽度缩减比例
	 * @param heightRatio   高度缩减比例
	 * @return 图像数据
	 */
	public static BufferedImage imageMagnifyRatio(BufferedImage originalImage, Integer withdRatio, Integer heightRatio) {
		if (withdRatio <= 0) {
			withdRatio = 1;
		}
		if (heightRatio <= 0) {
			heightRatio = 1;
		}
		int           width    = originalImage.getWidth() * withdRatio;
		int           height   = originalImage.getHeight() * heightRatio;
		BufferedImage newImage = new BufferedImage(width, height, originalImage.getType());
		Graphics      g        = newImage.getGraphics();
		g.drawImage(originalImage, 0, 0, width, height, null);
		g.dispose();
		return newImage;
	}

	/**
	 * 按照给点的比例缩小图像
	 * 当缩减比例小于等于0时不发生任何变化
	 *
	 * @param originalImage 图像数据
	 * @param withdRatio    宽度缩减比例
	 * @param heightRatio   高度缩减比例
	 * @return 图像数据
	 */
	public static BufferedImage imageShrinkRatio(BufferedImage originalImage, Integer withdRatio, Integer heightRatio) {
		if (withdRatio <= 0) {
			withdRatio = 1;
		}
		if (heightRatio <= 0) {
			heightRatio = 1;
		}
		int           width    = originalImage.getWidth() / withdRatio;
		int           height   = originalImage.getHeight() / heightRatio;
		BufferedImage newImage = new BufferedImage(width, height, originalImage.getType());
		Graphics      g        = newImage.getGraphics();
		g.drawImage(originalImage, 0, 0, width, height, null);
		g.dispose();
		return newImage;
	}
}
